跳到主要内容

使用分割器

本教程将指导您使用 OV80i 的 AI 驱动分割功能,创建完整的分割检测。您将学习如何通过逐像素教导相机识别和测量特定特征,如铅笔痕迹、划痕或其他缺陷,从而实现检测和分析。

您将学到:

  • 如何从头开始设置分割配方
  • 如何训练 AI 模型识别特定特征
  • 如何基于分割结果配置合格/不合格逻辑
  • 如何优化分割性能以适应生产使用

实际应用示例: 本教程以铅笔痕迹检测为例,但相同原理适用于检测划痕、裂纹、污染或任何可视觉区分的特征。

先决条件

  • 已设置并连接的 OV80i 相机系统
  • 带有您想检测特征的样品零件(例如带有铅笔痕迹的纸张)
  • AI 训练概念的基础理解
  • 可访问 Recipe Editor 和 Node-RED 功能

教程概述

我们将构建的内容: 一个能够检测纸张上铅笔痕迹,并根据检测到的标记量判断合格/不合格的分割模型。

所需时间: 45-60 分钟(含训练时间)

学习技能: AI 模型训练、分割标注、合格/不合格逻辑配置

步骤 1:创建新的分割配方

1.1 新建配方

  1. All Recipes 页面,点击右上角的 "+ New Recipe"
  2. 弹出“添加新配方”窗口
  3. 输入描述性的 Name(例如 "Pencil_Mark_Detection")
  4. 从配方类型下拉菜单中选择 "Segmentation"
  5. 点击 "OK" 创建新配方

为什么选择分割? 与识别整个对象的分类不同,分割能在图像中找到并测量特定特征,非常适合缺陷检测、污染分析或覆盖面积测量。

image.png

1.2 激活配方

  1. 新配方将在 All Recipes 页面显示为 "Inactive"
  2. 在配方右侧选择 "Actions > Activate"
  3. 点击 "Activate" 确认
  4. 配方状态变为 "Active"

image.png

1.3 进入 Recipe Editor

  1. 点击活动配方旁的 "Edit"
  2. 点击 "Open Editor" 确认
  3. 进入带有分割配方的 Recipe Editor 界面

检查点: 您应能在面包屑菜单中看到带有分割配方名称的 Recipe Editor 界面。

步骤 2:配置相机成像

2.1 访问成像设置

  1. 在 Recipe Editor 中,点击左下角的 "Configure Imaging"
  2. 打开成像配置页面,优化相机设置

image.png

2.2 优化对焦设置

  1. 将带有铅笔痕迹的样品纸张放入相机视野
  2. 使用 Focus slider 调整至铅笔痕迹清晰对焦
  3. 可手动输入对焦值以提高精度
  4. 如有 Focus View,可查看边缘高亮和对焦得分

对焦提示:

  • 对准缺陷出现的表面
  • 确保铅笔痕迹清晰锐利
  • 较高的对焦得分表示更佳的对焦质量

2.3 配置曝光设置

  1. 调整 Exposure 滑块以获得合适亮度
  2. 铅笔痕迹应清晰可见,纸张不过曝
  3. 可先使用自动设置,再微调
  4. 通过实时预览观察调整效果

曝光指南:

  • 铅笔痕迹应与纸张形成良好对比
  • 避免过曝导致细微痕迹消失
  • 保持整个检测区域光照均匀

2.4 设置 LED 照明

  1. 选择适合应用的 LED Light Pattern
  2. 对于铅笔痕迹,均匀照明通常效果最佳
  3. 调整 LED Light Intensity 以减少阴影和眩光
  4. 若反光问题严重,可尝试不同光照模式

2.5 调整 Gamma 和对比度

  1. 微调 Gamma 以增强痕迹与背景的对比度
  2. 较高的 Gamma 可使细微铅笔痕迹更明显
  3. 较低的 Gamma 有助于减少干净区域的噪点
  4. 平衡 Gamma 以优化缺陷可见性和背景清晰度

2.6 保存成像设置

  1. 优化完成后,点击 "Save Imaging Settings"
  2. 配方的相机配置即被保存
  3. 实时预览应显示清晰且对比度良好的图像

检查点: 相机应输出清晰图像,铅笔痕迹与纸张背景易于区分。

步骤 3:配置模板和对齐

3.1 进入模板图像和对齐设置

  1. 点击面包屑菜单中的 Recipe Name 返回 Recipe Editor
  2. 从菜单选择 "Template Image and Alignment"

3.2 本教程中的跳过对齐器

  1. 由于我们要检测整张板上的特征,点击 "Skip Aligner"
  2. 这将禁用基于位置的对齐,使用整张图像
  3. 点击 "Save" 以应用更改

何时使用对齐器: 当需要检测可能移动或旋转零件上特定位置的特征时,启用对齐器。对于像铅笔痕迹这样的整张板检测,通常跳过对齐器更为合适。

image.png

第 4 步:设置检测区域

4.1 进入检测设置

  1. 返回 Recipe Editor,选择 "Inspection Setup"
  2. 在这里定义要分析的图像区域

4.2 配置感兴趣区域 (ROI)

  1. 你将看到相机视野的预览
  2. 拖动 ROI 框的角点 调整其大小和位置
  3. 对于铅笔痕迹检测,通常覆盖整张板区域
  4. 确保 ROI 包含所有可能出现铅笔痕迹的区域

ROI 最佳实践:

  • 包含所有可能出现缺陷的区域
  • 排除不应分析的边缘或背景区域
  • ROI 应足够大以覆盖零件位置的变化
  • 避免包含文字、标志或其他预期标记

4.3 保存 ROI 配置

  1. ROI 位置调整好后,点击 "Save"
  2. 检测区域现已为分割模型定义完成

第 5 步:标注并训练模型

5.1 进入标注和训练

  1. 返回 Recipe Editor,选择 "Label and Train"
  2. 在这里教 AI 识别铅笔痕迹的样子

image.png

5.2 配置检测类别

  1. Inspection Types 下点击 "Edit"
  2. 将类别重命名为 "Pencil Mark"(或你的具体缺陷类型)
  3. 选择一个醒目的 颜色 用于显示检测到的痕迹
  4. 点击 "Save" 应用更改

5.3 捕获训练图像

  1. 至少拍摄 10 张 带有不同铅笔痕迹的板材图像
  2. 训练样本要多样化:
    • 不同大小和形状的铅笔痕迹
    • 浅色和深色痕迹
    • 板上不同位置
    • 不同密度的痕迹

训练图像建议:

  • 包含明显和细微的痕迹
  • 捕捉各种光照条件
  • 每张图像中包含无痕迹的干净区域
  • 确保图像代表实际生产环境

5.4 标注训练图像

  1. 对每张训练图像,使用 Brush tool 勾画铅笔痕迹
  2. 仅标注铅笔痕迹,避免标注纸张或其他特征
  3. 标注要精确且全面
  4. 每张图像完成后点击 "Save Annotations"

标注最佳实践:

  • 标注标准保持一致,统一定义“铅笔痕迹”
  • 标注完整痕迹,而非部分
  • 不标注文字、标志等预期标记
  • 使用稳定、细致的笔触确保边界准确

5.5 审核标注

  1. 仔细检查所有标注图像 确保准确无误
  2. 查找遗漏或错误标注的区域
  3. 需要时重新标注图像
  4. 高质量标注有助于提升模型性能

第 6 步:训练分割模型

6.1 启动训练流程

  1. 标注至少 10 张图像后,点击 "Return to Live"
  2. 点击 "Train Segmentation Model"
  3. 输入训练的 迭代次数

迭代次数建议:

  • 初始训练可设置 100-200 次迭代
  • 更多迭代通常提升准确率,但训练时间更长
  • 监控训练进度并根据情况调整
  • 在准确率和训练时间间找到平衡

image.png

6.2 监控训练进度

  1. 点击 "Start Training" 开始训练
  2. 训练进度窗口将显示:
    • 当前迭代次数
    • 训练准确率百分比
    • 预计剩余时间

6.3 训练控制选项

训练过程中你可以:

  • Abort Training - 需要修改时停止训练
  • Finish Training Early - 达到满意准确率时提前结束
  • Monitor Progress - 观察准确率随迭代提升

训练提示:

  • 达到目标准确率时训练会自动结束
  • 更高准确率代表模型性能更好
  • 准确率停滞时可能需要更多训练数据

6.4 评估训练结果

  1. 训练完成后,查看最终准确率
  2. 点击 "Live Preview" 观察实时分割效果
  3. 使用新样本测试模型性能

成功标志:

  • 铅笔痕迹以选定颜色高亮显示
  • 干净区域保持无标记
  • 不同类型痕迹检测一致
  • 模型对新样本响应良好

第 7 步:配置合格/不合格逻辑

7.1 进入 IO Block

  1. 返回 Recipe Editor,选择 "IO Block"
  2. 确保所有 AI Block 显示为 "trained (green)" 后继续
  3. 点击 "Configure I/O" 进入 Node-RED 编辑器

image.png

7.2 设置 Node-RED 流程

  1. 删除现有的 Classification Block Logic 节点
  2. 从左侧面板拖入:
    • All Block Outputs 节点(如果尚未存在)
    • Function 节点
    • Final Pass/Fail 节点
  3. 连接节点:All Block Outputs → Function → Final Pass/Fail

image.png

7.3 配置通过/失败逻辑

双击 Function 节点,选择以下逻辑示例之一:

选项 1:无缺陷则通过

// 如果未检测到铅笔标记则通过
const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length < 1;
msg.payload = results;
return msg;

选项 2:所有标记均小于阈值则通过

// 如果所有标记均小于阈值则通过
const threshold = 500; // 像素
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;

选项 3:总覆盖面积低于阈值则通过

// 如果总标记面积低于阈值则通过
const threshold = 5000; // 总像素数
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;

7.4 部署并测试逻辑

  1. 点击 "Done" 保存函数
  2. 点击 "Deploy" 激活逻辑
  3. 进入 HMI 测试您的通过/失败逻辑

测试您的逻辑:

  • 使用干净的样品(应通过)
  • 使用轻微标记的样品(根据您的标准通过或失败)
  • 使用严重标记的样品(应失败)
  • 验证结果是否符合预期

第 8 步:优化与验证

8.1 使用生产样品测试

  1. 运行多个测试样品进行检测
  2. 验证检测准确度是否满足要求
  3. 检查通过/失败逻辑是否正确工作
  4. 记录任何问题或边缘情况

8.2 微调模型性能

如果检测结果不稳定:

  • 添加更多具有多样性的训练图像
  • 提高标注质量和一致性
  • 调整成像设置以增强对比度
  • 进行更多迭代的重新训练

如果需要调整通过/失败逻辑:

  • 修改 Node-RED 函数中的阈值
  • 测试不同的逻辑方案
  • 针对复杂决策考虑多重条件
  • 根据生产需求进行验证

8.3 生产验证

  1. 在实际条件下使用真实生产零件测试
  2. 与质量团队确认标准符合要求
  3. 记录性能指标,如检测准确率和误报率
  4. 建立监控机制,跟踪性能变化

第 9 步:理解分割结果

9.1 分割数据结构

您的分割结果包括:

  • Blobs:单个检测到的特征(铅笔标记)
  • Pixel Count:每个特征的大小
  • Location Data:特征的位置
  • Confidence Scores:模型对每个检测的置信度

9.2 使用分割数据

您可以基于以下内容创建复杂的通过/失败逻辑:

  • 缺陷数量
  • 单个缺陷大小(像素数)
  • 缺陷总面积(所有像素数之和)
  • 缺陷位置
  • 缺陷形状特征(适用于高级应用)

成功!您的分割模型已完成

您的 OV80i 分割检测系统现在可以:

自动检测铅笔标记(或您特定的特征)

测量检测特征的大小和数量

根据您的具体标准做出通过/失败判定

提供每个检测特征的详细信息

适应标记大小、形状和位置的变化

关键要点

分割 vs 分类:

  • 分割 用于在图像中定位并测量特定特征
  • 分类 用于识别整体对象或整体状态
  • 分割适合缺陷检测、污染分析或覆盖率测量

训练最佳实践:

  • 标注质量优于数量
  • 训练集应包含多样化样本
  • 使用生产样品进行充分测试
  • 持续监控并根据需要重新训练

通过/失败逻辑:

  • 从简单条件开始,逐步增加复杂度
  • 使用边缘案例和临界样品测试逻辑
  • 记录判定标准以保持一致性
  • 考虑多因素以实现稳健判定

后续步骤

完成首个分割模型后:

  1. 应用于其他用例 — 尝试检测不同类型的缺陷或特征
  2. 集成到生产系统 — 连接 PLC 或质量管理系统
  3. 建立数据采集 — 跟踪性能指标和检测统计
  4. 培训操作员 — 确保团队了解如何监控和维护系统
  5. 制定维护计划 — 定期更新模型并评估性能

相关文档

  • How-To: Train a Segmenter
  • Concepts: Classifier vs Segmenter
  • Tutorial: Using a Classifier (Single-ROI Example)
  • How-To: Configure Node-RED Logic
  • Reference: Node-RED Logic Blocks Guide